package RMI;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;

import TagsDB.Plugin;
import TagsDB.TagedFile;


public interface ReceiveMessageInterface extends Remote
{
 /**
  * Get the client folder path
  * @return String
  * @throws RemoteException
  */
 public String getFolderPath() throws RemoteException;
 public void takeUserToShare(String userToShare,String folderName) throws RemoteException;
 /**
  * Search files according to file name and\or tags
  */
 public ArrayList<TagedFile> search(String fileName,ArrayList<String> options)throws RemoteException;
 /**
  * get array list of all tags to search
  * @param check
  * @param itemToSearch
  * @return
  */
 public ArrayList<String> optionsForSearch(boolean check,String itemToSearch)throws RemoteException;
 /**
  * get all options tags
  * @return array list of strings
  */
 public ArrayList<String> getOptionsToSearch()throws RemoteException;
 /**
  * clear options tags
  */
 public void clearOptionsToSearch()throws RemoteException;
 /**
  * restore all the use plugins for the user
  */
 public void restorePlugin()throws RemoteException;
 /**
  * check if the plugin name is already exist
  * @param pluginName
  * @return true if the name plugin is new otherwise false
  */
 public boolean checkPluginExist(String pluginName)throws RemoteException;
 /**
  * change the status of the use plugin
  * @param pluginName
  * @param check
  */
 public void updateUsePlugin(String pluginName,boolean check)throws RemoteException;
 /**
  * Add the tuple of plugin to dataBase in Plugins table
  * @param strPath
  * @param strNamePlugin
  */
 public void addPluginToDB(String strPath,String strNamePlugin)throws RemoteException;
 /**
  * Get all the plugins that exist
  */
 public ArrayList<Plugin> getPlugins()throws RemoteException;
 /**
  * Get all the options of tags, for example Size plugin will return- {small,medium,large}
  * @return array list of string
  */
 public ArrayList<String> allOptionTags()throws RemoteException;
 public boolean playService()throws RemoteException;
 public boolean pauseService()throws RemoteException;
}